home *** CD-ROM | disk | FTP | other *** search
/ Atari Mega Archive 1 / Atari Mega Archive - Volume 1.iso / lists / gem / l_1199 / 1152 < prev    next >
Internet Message Format  |  1994-08-27  |  11KB

  1. Date: Mon, 1 Aug 94 01:47 CDT
  2. From: ekl@sdf.lonestar.org (Evan K. Langlois)
  3. To: gem-list@world.std.com
  4. Subject: Re: GEM List
  5. Precedence: bulk
  6.  
  7. Note : I use cut-n-paste and macros for my quoting.  Using a left-margin
  8. approach would take too much time and I'd need to do reformatting of the
  9. quotes in some cases.  But, since, some people can't see my text separated
  10. from the double-bar'd text (with CRs) I've switched to arrows.
  11.  
  12. vvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvv
  13. If my guess is correct, then it is not a bug in AES.  Rather,
  14. graf_dragbox and form_button use evnt_multi!  And since evnt_multi
  15. ... stuff deleted ... graf_mkstate, on the other hand, works just great.
  16. ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  17.  
  18. But the message isn't even sent until the button is back UP!  graf_mkstate
  19. is a polling call.  My apps will use it ONCE after event_multi, and no
  20. place else.
  21.  
  22. vvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvv
  23. Since evnt_multi win't sent repeated WM_TOPPED messages, I have to handle
  24. everything after I get the first one, *plus I have to make sure the mouse
  25. button it up before the next evnt_multi call*.
  26. ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  27.  
  28. How are you getting a WM_TOP message before the button is released?
  29.  
  30.  
  31. vvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvv
  32. This works great.  The only problem is that while the button is down, the
  33. operations of my library are trapped within itself, not getting back to
  34. ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  35.  
  36. I'm just gonna write my own dragbox routine and use rectangle events.
  37. So, you could drag something with a right mouse button and select a menu
  38. before you drop it, and have a window update itself. No modes at all.
  39.  
  40. Its gonna hit evnt_multi pretty often, so I'm gonna optimize it quite
  41. a bit using a special binding.  However, unless the user has WINX or
  42. MultiTOS or something, then drags from a background window with the
  43. left button just won't work.  The library user decides what buttons
  44. are used when, but in general, if you don't have anything else to do
  45. with a button, it will work like the left button (and the more buttons
  46. you have, the more you can do at once!).
  47.  
  48. vvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvv
  49. AVOID scancodes it the app-defs file.  It's easy enough to tell the
  50. difference between Backspace and Ctrl-H (or Return/Enter/Ctrl-M, etc...)
  51. ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  52.  
  53. You don't HAVE to tell the difference!  If the scan-code doesn't match
  54. anything in the app-defs list of scan-codes then just look at ascii
  55. codes in the app-defs.   If you still don't find it, then it isn't
  56. a hot-key, and if you do find it, then the attached string tells you
  57. what operation to perform.
  58.  
  59. vvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvv
  60. Oh, and there's another problem with app-defs... if you don't have a TSR
  61. to load it (of course translate it into something useful) and put it in
  62. ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  63.  
  64. Useful?  It is already in a useful form!  Why would you change it?  Let
  65. the application writer use whatever form of lookup is best.  And what
  66. makes you think you have to keep the whole file in memory?  The application
  67. will load it, make whatever hash-tables or linked lists or whatever are
  68. needed, and then free the ram!  Simple enough!
  69.  
  70. vvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvv
  71. out whether it should use the default key or determine if the user's put
  72. one in there to customise it just for that app.
  73. ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  74.  
  75. What?  If the information is available, use it, otherwise, not.  A TSR?
  76. Do you realize how many problems you'll have with that?  A reboot to change
  77. a program option?   I think not.  And with memory protection, any time
  78. you use a pointer to something outside your program, you are opening the
  79. way to lots of problems.
  80.  
  81.  
  82. vvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvv
  83. any time a change is made because the size of the file would change
  84. (although this isn't much of a big deal), plus it's harder to parce
  85. (because if it's binary data, you don't have to parce at all!).
  86. ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  87.  
  88. And how should
  89.  
  90. *.Open.key : ^O
  91.  
  92. be represented in binary?  Overwriting an existing file is pretty easy,
  93. although sharing modes could be a problem .. but multiple apps won't
  94. have it open at once anyway.  Would you force everyone to search a linked
  95. list with action/key pairs?  So, open would be 0x124 or something?  That
  96. may be fine for you, but it may not suit everyone!  In fact, it will make
  97. things HARDER for me.
  98.  
  99. vvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvv
  100. This sounds very interesting.  I'll have to figure out Fselect.
  101. One problem I have with modem I/O is that GEMDOS does not seem to provide
  102. a way for me determine how many characters are there before using Fread.
  103. As a result, I have to use Fread (or Bconin) repeatedly, reading one
  104. character until Bconstat says there are no more characters.
  105. ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  106.  
  107. Normal GEMDOS will read character by character but if you tell it to read
  108. more than one character, it will block until an EOL character (CR).  To
  109. stop this, MiNT can set the file handle to RAW mode with an Fcntl() call.
  110. You can tell how many characters are waiting to be read with Finstat(),
  111. although it may be easier to just read 2K and let Fread return with how
  112. many characters were actually read, just like a file.  Fselect uses a
  113. bitmap of file handles, so waiting on file 2 has the 2nd bit set.  The
  114. docs are in the compendium, and in the mint man pages.  Use (1 << handle)
  115. to get a value that can be or'd to your mask of handles. You can wait for
  116. up to 32 file handles at once (the per application limit) with separate
  117. read and write for each.
  118.  
  119. vvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvv
  120. I have a couple or routines that read directly from the Iorec structure
  121. and read the buffer directly.  It works VERY fast.  Would this interfere
  122. with MultiTOS?
  123. ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  124.  
  125. Kinda.  Not normally, since MiNT does use the IOREC structures, but it is
  126. possible that a user will redirect modem IO to some other device, or may
  127. be using a device driver with a different IOREC.  Reading from the Iorec
  128. is definately bad practice.  These structures shouldn't be accesses by
  129. the programmer.  You simply don't want to be messing with them while an
  130. interrupt comes in, and you have no guarantee that you are accessing the
  131. right structure since its so easy to redirect anything to another device!
  132. Stay away from XBIOS calls, and only use IOREC if there is no other way
  133. to get the information.  If MiNT is running, it has the calls you need!
  134.  
  135. vvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvv
  136. How do I find out how many characters are there that I can read?
  137. ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  138.  
  139. Finstat(), and the number you can write before blocking is Foutstat().
  140. Pass the file handle, it returns a long.  Only available with MiNT.
  141. Otherwise, there is no way to tell.
  142.  
  143. vvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvv
  144. What is the file handle of the serial port?
  145. ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  146.  
  147. It's -2 to redirect the BIOS (or read write where the BIOS thinks the
  148. AUX device is).  The GemDos one is 3, or stdaux.  That is the one you
  149. should probably use since if the BIOS one gets redirected, this one
  150. does to, but not the other way around.  The only problem is that this
  151. does not point to the serial port on all version of TOS.  Any intelligent
  152. library start-up code should check this and automatically do the proper
  153. Fopen and such for you.
  154.  
  155. vvvvvvvvvvvvv